package com.fdb.efp.nls.service.dao;

import com.fdb.efp.nls.service.domain.LoanRepayDetail;
import com.fdb.efp.nls.service.domain.LoanRepayPlan;
import com.fdb.efp.loan.service.vo.LoanRepayDetailVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>DAO interface:还款明细表				<p>
 *
 * @author cyj
 * @date 2018-12-27
 */
public interface LoanRepayDetailDao {

	public int insertLoanRepayDetail(LoanRepayDetail loanRepayDetail);

	public int deleteByPk(LoanRepayDetail loanRepayDetail);

	public int updateByPk(LoanRepayDetail loanRepayDetail);

	public LoanRepayDetail queryByPk(LoanRepayDetail loanRepayDetail);

	/**
	 * @param loanRepayDetail
	 * @return
	 * @description:根据借据号获取还款明细列表
	 * @date:2019年1月26日 下午5:55:51
	 * @author:cenyj
	 */
	public List<LoanRepayDetail> queryAllByLoanNo(LoanRepayDetail loanRepayDetail);

	public List<LoanRepayDetail> queryAllOwnerByPage(LoanRepayDetailVO loanRepayDetail);

	public List<LoanRepayDetail> queryAllCurrOrgByPage(LoanRepayDetailVO loanRepayDetail);

	public List<LoanRepayDetail> queryAllCurrDownOrgByPage(LoanRepayDetailVO loanRepayDetail);

	/**
	 * 查詢贷款还款计划明细列表数据
	 *
	 * @return
	 * @description:TODO
	 * @date:2018年12月28日 下午4:07:54
	 * @author:cenyj
	 */
	public List<LoanRepayDetail> getGzBankLoanFileTempList();


	/**
	 * 通过借据号分页查询还款明细信息
	 *
	 * @param loanRepayDetail
	 * @return
	 * @author qiuyf
	 * @version 1.0
	 * @since 2019年2月16日 下午4:31:43
	 */
	public List<LoanRepayDetail> queryAllByLoanNoByPage(LoanRepayDetail loanRepayDetail);

    public ArrayList<LoanRepayDetail> queryLoanRepayDetailByBST(LoanRepayDetail loanRepayDetail, RowBounds rowBounds);

	Integer queryCountByBST(LoanRepayDetailVO loanRepayDetail);

	/**
	 * 批量新增还款明细信息 <br>
	 * 0.1:ludayong:2019年3月8日 下午2:37:18:新增 <br>
	 *
	 * @author ludayong
	 * @date 2019年3月8日 下午2:37:18
	 * @version 0.1
	 * @since 2019年3月8日 下午2:37:18
	 */
	public int batchInsertLoanRepayDetail(List<LoanRepayDetail> addList);

	/**
	 * 批量更新还款明细信息 <br>
	 * 0.1:ludayong:2019年3月8日 下午2:37:18:新增 <br>
	 *
	 * @author ludayong
	 * @date 2019年3月8日 下午2:37:18
	 * @version 0.1
	 * @since 2019年3月8日 下午2:37:18
	 */
	public int batchUpdateLoanRepayDetail(List<LoanRepayDetail> updateList);

	/**
	 * 贷款每日还款信息临时表数据修改还款明细借据表有数据则更新，无则新增 <br>
	 * 0.1:weijj:2019年5月7日 下午2:37:18:新增 <br>
	 *
	 * @author weijj
	 * @date 2019年5月7日 下午2:37:18
	 * @version 0.1
	 * @since 2019年5月7日 下午2:37:18
	 */
	public int insertOrUpdateLoanRepayDetail(List<LoanRepayDetail> list);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年5月13日 下午9:42:01
	 * 功能描述：批量插入数据
	 */
//	public int insertLoanRepDtlBatch(List<LoanRepayDetail> LoanRepayDetailList);
//
//	List<LoanRepayDetail> queryCreditReportingData(@Param("prdInfoIds") List<String> prdInfoIds, @Param("batchDate") String batchDate);
//

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年6月21日 下午5:43:17
	 * 功能描述：根据全局流水号统计还款明细记录数
	 */

	public int countInfoByGlobalSerno(String globalSerno);

	/**
	 * 新增或更新还款计划明细: <br>
	 * 0.1:caoxin:2019/6/25 9:41: 新增或更新还款计划明细: <br>
	 *
	 * @return
	 * @author caoxin
	 * @date 2019/6/25 9:41
	 * @version 0.1
	 * @since 2019/6/25 9:41
	 */
    int insertOrUpdateLoanRepayPlanDetails(List<LoanRepayPlan> loanRepayPlanDetails);
//
//    /**
//     * 需求编号：2019D0519<br/>
//     * 问题编号：<br/>
//     * 功能描述：通过主动申请还款日期的一部分去模糊查询所有符合条件的还款明细记录<br/>
//     * 开发人员：周才顺<br/>
//     * 创建时间：2019年6月26日<br/>
//     * @author zhoucs1
//     * @since  1.0
//     * @version 1.0
//     * @param repayDay
//     * @return
//     */
//		@author:liuty
//		@date:2019/10/17
//		涉及产品:税e贷
//		功能:通过主动申请还款日期的一部分去模糊查询所有符合条件的还款明细记录<br/>
//		原因:增量投产只投了接口没投实现，编译报错因此注释，不影响当前产品实际业务
//	public List<PlsLoanRepayDetailVO> queryByRepayYear(@Param(value = "setlApplyDt") String repayDay);


    List<LoanRepayDetail> queryDataByLoanNos(@Param("loanNos") List<String> loanNos);

    List<LoanRepayDetail> queryFailedDataByLoanNos(@Param("loanNos") List<String> loanNos);

	/**
	 * 需求编号：【2020D0311】（马上还款明细同步）
	 * 问题编号：【2020D0311】（根据还款流水号，贷款借据号，还款期数查询还款明细信息）
	 * 开发人员：【ludayong】
	 * 创建日期：【2020/2/26 15:19】
	 * 功能描述：
	 * 修改日期：【2020/2/26 15:19】
	 * 修改描述：
	 */
	public LoanRepayDetail queryLoanRepayDetailByCondition(LoanRepayDetail loanRepayDetail);

	/**
	 * 需求编号：【2020D0311】（马上还款明细同步）
	 * 问题编号：【2020D0311】（根据还款流水号，贷款借据号，还款期数更新还款明细信息）
	 * 开发人员：【ludayong】
	 * 创建日期：【2020/2/26 15:19】
	 * 功能描述：
	 * 修改日期：【2020/2/26 15:19】
	 * 修改描述：
	 */
	public int updateLoanRepayDetailByCondition(LoanRepayDetail loanRepayDetail);


	ArrayList<LoanRepayDetail> querySuccessRepayDetail();

	List<LoanRepayDetail> queryByRpyNo(@Param("list") List<String> list);

	/**
	 * 批次使用
	 *
	 * @return
	 * @author XIEZIWEI
	 * @params * @param null
	 * @date 2020/4/2 11:08
	 * @version 0.1
	 * @since 2020/4/2 11:08
	 */
	List<LoanRepayDetail> queryByWfStsAndRsSts();

    int insertOrUpdatePsd(List<LoanRepayDetail> list);

    List<LoanRepayDetail> queryBySetlSeq(@Param("setlSeq") String setlSeq);

	/**
	 * 优e贷 根据还款申请日期、还款成功、借据号 查询明细数据
	 *
	 * @author xieziwei
	 * @version 0.1
	 */
	List<LoanRepayDetail> queryDetailBySetlApplyDt(LoanRepayDetail loanRepayDetail);

	List<LoanRepayDetail> queryDetailBySetlTyo(LoanRepayDetail loanRepayDetail);

}
